1. Field of the Invention
The present invention relates generally to a data processing system. More specifically, the present invention relates to a computer implemented method, computer program product and data processing system for reducing communication signaling protocol latency.
2. Description of the Related Art
The session initiation protocol(SIP) is being implemented in the Java language, for example, SIP container in WebSphere, and being used by service providers. Session initiation protocol (SIP) is an Internet signaling protocol which has many uses, such as Voice over IP (VoIP). Session initiation protocol (SIP) can establish sessions for features such as audio/videoconferencing, interactive gaming, and call forwarding to be deployed over networks thus enabling service providers to integrate basic telephony services with Web, e-mail, and chat services. Session initiation protocol (SIP) is an example of a communication signaling protocol. Session initiation protocol (SIP) has quality of service (QoS) requirements. Customers are concerned about end-to-end latency. In particular, customers would like deterministic latency and they are willing to reduce throughput to get more deterministic latency.
A problem in providing deterministic latency in a virtual machine environment, such as Java, C#, Lisp, Perl, and so forth, is that garbage collection events occur that stop all application processing for a period of time. Garbage collection is a form of automatic memory management. Memory management is the act of managing computer memory. In its simpler forms memory management involves providing ways to allocate portions of memory to programs at their request and free the portions of memory back to the system for reuse when the portions of memory are no longer needed. A garbage collector or collector attempts to reclaim garbage, or memory used by objects that will never again be accessed or mutated by the application. Memory can be allocated and used, and the garbage collection process will automatically free any chunks of memory that are no longer referenced. Typically, garbage collection involves the automatic reclamation of dynamically allocated objects that are no longer accessible. This ‘stop the world’ garbage collection time is based on the amount of heap used and the number of objects created.
One approach to solving this ‘stop the world’ garbage collection time is to oversize the number of CPU's used by the system, which is not very cost effective. Another solution is to measure an application's garbage collection activity and tune the garbage collection algorithm. However, this solution can only go so far. Another solution is to have a scheduled, periodic thread that performs garbage collection activities. An input to this thread is the frequency and length at which the periodic garbage collection thread operates.
However, a concern still remains that the workload could over-run the capacity of the periodic garbage collection thread when the input rate spikes and the object creation rate exceeds the rate at which the periodic garbage collection thread can perform garbage collection activities. It is desirable to solve this problem in a manner that would also supplement existing garbage collection algorithms, that is generational garbage collection, because the existing algorithms do have a low priority, background thread that performs garbage collection activities.